/**   
 * 项目名：五位一体化工安全信息平台
 * 日期：    2019-12-07 13:44:19  
 * Copyright (c) 2015- joysuch-版权所有     
 */

package com.joysuch.wwyt.bp.service;

import java.util.List;
import java.util.Map;

import com.joysuch.wwyt.bp.bean.BpEmergencyMaterialTypeEditBean;
import com.joysuch.wwyt.bp.bean.BpEmergencyMaterialTypeListBean;
import com.joysuch.wwyt.bp.bean.BpEmergencyMaterialTypeListBean.Search;
import com.joysuch.wwyt.bp.entity.BpEmergencyMaterialType;
import com.joysuch.wwyt.core.exception.BusinessRestrictionsException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface BpEmergencyMaterialTypeService {

    public BpEmergencyMaterialType add(BpEmergencyMaterialTypeEditBean entity) throws Exception;

    void update(BpEmergencyMaterialTypeEditBean entity) throws Exception;

    Page<BpEmergencyMaterialTypeListBean> findByPage(Pageable page, Search condition);

    void delete(Long id);

    BpEmergencyMaterialType findById(Long id);

    /**
     * 获取所有物资类型列表（按物资数降序排序）
     */
    List<BpEmergencyMaterialTypeListBean> findAll();

    /**
     * 更新指定物资类型的物资数
     * 
     * @param id
     *            指定物资类型 ID
     */
    void updateMaterialCount(Long id);

    /**
     * 检查物资类型名称是否有重复（新增时用）
     * 
     * @param name
     *            待新增的物资类型名称
     * @return 返回值：true:有重复；false:没有重复
     */
    boolean checkName(String name);

    /**
     * 批量保存物资类型（新增、修改、删除）
     * 
     * @param materialTypeList
     *            待操作的数组
     */
    void save(List<Map<String, Object>> materialTypeList) throws BusinessRestrictionsException;
}
